package top.szhome.develop.service;

import top.szhome.develop.generator.FileNode;
import top.szhome.develop.generator.FileSystem;

import java.io.OutputStream;
import java.util.List;

/**
 * 代码生成器服务定义
 *
 * @author 唐加利
 * @date 2023/8/30
 **/
public interface GeneratorService {

    /**
     * 根据模板方案生成代码
     * @param modelIds
     * @return
     */
    List<FileNode> preview(List<Long> modelIds);

    /**
     * 根据模板方案生成代码
     * @param modelIds
     * @param os
     * @return
     */
    FileSystem generate(List<Long> modelIds, OutputStream os);

    /**
     * 代码生成请求
     * @param modelId
     * @param templateSchemaCode
     * @param templateCode
     * @return 返回生成的代码
     */
    String generate(Long modelId, String templateSchemaCode, String templateCode);

    /**
     * 生成代码
     *
     * @param project       工程
     * @param model         模型
     * @param properties    属性
     * @param template      模板
     */
//    void generate(Project project, Model model, List<Property> properties, Template template);

}
